# s = "Hello, Python world!"
# # 字符串长度计算
# print(len(s))
# # 计算字符串中"o"字符的个数
# print(s.count('o'))
# # 将字符串转换为大写
# print(s.upper())
# # 将字符串转换为小写
# print(s.lower())
# # 查找"Python"在字符串中的位置
# print(s.find('Python'))
# # 替换字符串中的"world"为"universe"
# print(s.replace('world','universe'))
# # 检查字符串是否以"Hello"开始
# print(s.startswith('Hello'))
# # 检查字符串是否以"!"结尾
# print(s.endswith('!'))
# # 以","为分隔符，拆分字符串
# print(s.split(','))
# # 去除字符串首尾的"!"
# print(s.strip('!'))
# # 字符串反转
# print(s[::-1])
# # 字符串切片，获取"Python"
# print(s[7:13:1])
# # 将字符串s中的"Hello,"删除
# print(s.lstrip('Hello'))
# # 拼接两个字符串 "Hello," 和 "World!"
# print('Hello'+'World!')
# # 使用f-string合并字符串和数字2021
# print(f'{s} 2021')
# # 找出'a'第一次出现的位置
# print(s.find('a'))
# # 找出'e'最后一次出现的位置
# print(s.rfind('e'))
# # 计算字符串中空格的数量
# print(s.count(' '))
# # 使用循环遍历字符串中的每个字符
# for i in s:
#     print(i)
# # 字符串转为"列表"形式，每个字符为一个列表元素
# for i in s:
#      n = list(i)
#      print(n,type(n))
# # 字符串排序（提示：先转换为列表）
# list_i = []
# for i in s:
#      n = list(i)
#      list_i.append(n)
# list_i_s = sorted(list_i)
# print(list_i_s)
# # list_i.sort()
# # print(list_i)
# # 判断字符串是否为数字
# print(s.isnumeric())
# # 将列表 `['Hello,', 'Python', 'World!']` 使用空格连接为一个字符串
# link = ' '.join(('Hello,', 'Python', 'World!'))
# print(link)
# # 使用%操作符格式化字符串，将数字100插入到"Number: "后面
# print('{:.2%}Number'.format(100))
# # 检查字符串是否全部为小写字母
# print(s.islower())
# # 检查字符串是否全部为大写字母
# print(s.isupper())
# # 将数字列表 `[1, 2, 3]` 转换成字符串，元素之间用`-`连接
# num = [1, 2, 3]
# num_str= '-'.join(map(str,num))
# print(num_str, type(num_str))
# # 找出字符串中所有的"o"的位置
# n = 0
# while True:
#     n = s.find('o',n)
#     if n == -1:
#         break
#     print(n)
#     n+=1
# # 替换字符串中的第一个"o"为"O"
# print(s.replace('o','0',1))
# # 字符串插入操作，向字符串指定位置插入子字符串"amazing "
# index = 6
# str = 'amazing'
# s_insert = s[:index] + str +s[index:]
# print(s_insert)
import re

s = "Python is great!"
# 字符串反转: 给定字符串`s = "Python is great!"`，不使用任何内置函数，编写代码以反转字符串
print(s[::-1])
# 字符计数: 对于同一个字符串`s`，计算字符 `t'` 在其中出现的次数
print(s.count('t'))
# 替换字符: 把字符串`s` 中的所有空格替换成下划线 ``
print(s.replace(' ','_'))
# 检查回文: 检查字符串`s2 = "A man, a plan, a canal, Panama!"` 在忽略大小写、标点和空格的情况下是否为回文字符串
s2 = "A man, a plan, a canal, Panama!"
s2_l = s2.lower()
s2_re = re.sub(r'[^a-z0-9]','',s2_l)
s2_f = s2_re[::-1]
if s2_re == s2_f :
    print('yes',s2_re , s2_f)
else:print('no\n',s2_re,s2_f)
# 子字符串查找: 在`s` 中查找第一次出现子字符串 `is"` 的位置
print(s.find('is'))
# 字符串插入: 在`s` 中第一个 `t'` 字符之后插入子字符串`"_inserted"`
n = s.find('t')
print(s[:n+1] + '_inserted' + s[n+1:])
# 部分替换: 替换`s` 中第一次出现的 `great"` 为 `awesome"
print(s.replace('great','awesome',1))
# 切片与拼接: 将`s` 切分为两部分，其中第一部分包含前半部分的字符，第二部分包含后半部分的字符，然后将这两部分以相反顺序拼接起来
x = len(s)//2
s_l = s[:x]
s_r = s[x:]
print(s_l+s_r[::-1])
# 创建字符串列表: 使用列表生成式，根据字符串`s` 创建一个列表，其中包含`s` 的每个单词的首字母大写形式
s_list = []
s_up = s.upper()
for i in s_up:
    s_list.append(i)
print(s_list,type(s_list))
# 字符替换加密: 编写一个函数`encrypt`，使用字典 `a: m, b: n, ... z: l}` 的对应规则加密字符串`s3 = "encryption"`
def encrypt(s):
    encrypt_dict = {}
    for i in range(26):
        origin_alphabet = chr(ord('a')+i)
        encrypt_alphabet = chr(ord('a')+(i+12)%26)
        encrypt_dict[origin_alphabet] = encrypt_alphabet
    alphabet = []
    for x in s :
        alphabet.append(encrypt_dict[x])
    print(alphabet)
encrypt("encryption")

# def encrypt(s):
#     # 创建加密字典: a→m, b→n, ..., z→l
#     encrypt_dict = {}
#     for i in range(26):
#         # 计算替换后的字母索引（当前索引+12，超过25则取模）
#         original_char = chr(ord('a') + i)
#         encrypted_char = chr(ord('a') + (i + 12) % 26)
#         encrypt_dict[original_char] = encrypted_char
#     # 对字符串进行加密
#     encrypted = []
#     for char in s:
#         # 只加密小写字母，其他字符保持不变
#         if char in encrypt_dict:
#             encrypted.append(encrypt_dict[char])
#         else:
#             encrypted.append(char)
#
#     return ''.join(encrypted)
# # 测试加密函数
# s3 = "encryption"
# encrypted_s3 = encrypt(s3)
# print(f"原始字符串: {s3}")
# print(f"加密后字符串: {encrypted_s3}")

